k, n = map(int, input().split())
dp = [[0] * (k + 1) for _ in range(n + 1)]
# 当序列长度为1时，每个数字（1到k）都只有一种排列方式
for i in range(1, k + 1):
    dp[1][i] = 1

for i in range(2, n + 1):  # 遍历序列长度，从2到n
    for j in range(1, k + 1):  # 遍历前一个位置的数字，从1到k
        res = j  # 初始化res为j，res表示当前位置可能的数字
        while res <= k:  # 当res不超过k时继续循环
            dp[i][res] += dp[i - 1][j]  # 将长度为i-1、以j结尾的序列数量累加到长度为i、以res结尾的序列数量中
            res += j  # 将res增加j，寻找下一个可能的倍数
print(sum(dp[n][1:k + 1]) % 1000000007)  # 输出长度为n的所有序列数量之和，并对1000000007取模

